home *** CD-ROM | disk | FTP | other *** search
/ Video Toaster 4.2 / Video Toaster v4.2.iso / arexx / modeler / pointcenter.lwm < prev    next >
Text File  |  1993-12-13  |  956b  |  56 lines

  1. /* CMD: Point Center
  2.  * Find average point position, like center of mass
  3.  * By Arnie Cachelin © 1993 NewTek Inc.
  4.  *
  5.  */
  6.     mxx="LWModelerARexx.port"
  7.     signal on error
  8.     signal on syntax
  9.   numeric digits 5
  10.     mxx_add = addlib(mxx,0)
  11.     call addlib("rexxmathlib.library",0,-30,0)
  12.     call main
  13.     if (mxx_add) then call remlib(mxx)
  14.     exit
  15.  
  16.     syntax:
  17.     error:
  18.     t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  19.     if (mxx_add) then call remlib(mxx)
  20.     exit
  21.  
  22.  
  23. main:
  24.   call sel_mode(USER)
  25.   c=xfrm_begin()
  26.   sx=0; sy=0; sz=0
  27.   do i=1 to c
  28.     v=xfrm_getpos(i)
  29.     sx=sx+word(v,1)
  30.     sy=sy+word(v,2)
  31.     sz=sz+word(v,3)
  32.     v=sx/c sy/c sz/c
  33.     end
  34.   call Notify(1,c" Points","!Point Center:",v)
  35.   return
  36.  
  37. Magnitude: PROCEDURE
  38.   arg v
  39.   return(sqrt(Dot(v,v)))
  40.  
  41. Dot: PROCEDURE
  42.   arg v1,v2
  43.   S=0
  44.   do i=1 to 3
  45.     S=S+word(v1,i)*word(v2,i)
  46.     end
  47.   return S
  48.  
  49. Dist: PROCEDURE
  50.   arg v1,v2
  51.   S=0
  52.   do i=1 to 3
  53.     S=S + (word(v2,i) - word(v1,i))^2
  54.     end
  55.   return sqrt(S)
  56.